草庐IT

c++ - ofstream 指针的 vector

全部标签

c++ - 是否存在 valgrind 不会报告现有泄漏/错误的情况

我第一次检查valgrind,我喜欢当前的结果,但是我很好奇valgrind是否总是会返回它遇到的内存泄漏,或者是否有一些可能会避免,具体取决于如何该程序已关闭。例如,如果使用“killall-9program”终止程序。这是我当前程序的结果,通过在Ubuntu系统监视器中使用“结束进程”停止==10182==HEAPSUMMARY:==10182==inuseatexit:0bytesin0blocks==10182==totalheapusage:8,747,225allocs,8,747,225frees,1,352,535,387bytesallocated==10182===

c++ - C/C++ 中的参数传递技术

有不同的参数传递技术,例如-在编程语言中按值调用、按引用调用、按值调用结果、按名称调用、按文本调用和按需要调用。我见过C/C++中按值调用和按引用调用的实现;但其他技术仅通过简单的普通示例进行教授,我们被告知该示例使用“按值结果调用”,因此可以相应地回答。我想知道其他技术是否曾经用C/C++或任何其他语言实现过,或者它们只是理论上的? 最佳答案 C仅提供并且仍然提供按值传递。 关于c++-C/C++中的参数传递技术,我们在StackOverflow上找到一个类似的问题:

C++ 严格的别名规则和指向成员的指针

以下代码在G++中产生警告:#include#includetemplateQT::*pointer_to(PT::*p,QP::*q){typedefQT::*output_ptr;//warning:dereferencingtype-punnedpointerwillbreakstrict-aliasingrules[-Wstrict-aliasing]size_ttmp=reinterpret_cast(p)+reinterpret_cast(q);returnreinterpret_cast(tmp);}structA{intx;};structB{Aa;};intmain(

c++ - 在不使用静态成员的情况下跨对象树共享数据的策略

我处于这样一种情况,我需要在多态对象树的许多实例之间共享数据,但话又说回来,我需要共享数据是“每树”的,所以在基类中使用静态类成员是不行的确实是一个选择。我不想用指向共享数据的额外成员指针“加重”每个实例,所以我目前的方法(考虑到我使用树)是将共享数据作为树根节点的成员,并且每次访问共享数据通过一系列间接访问,具体取决于访问“全局树”数据的特定节点的深度。由于在某些情况下共享数据将被非常频繁地访问(每秒数百万次......至少这是预期的),我想知道是否有一些设计模式可以帮助我避免间接访问根目录节点,同时仍然没有给对象的足迹引入额外的膨胀。虽然可以将根节点指针“缓存”为本地指针,例如访问

c++ - 是否可以将 WebRTC 浏览器转换为原生(C、C++ 或其他)?

我见过几个浏览器原生WebRTC应用程序的例子,比如将存储在服务器上的视频文件流式传输到一个或多个浏览器,但是有没有可能相反?IE。将网络摄像头从浏览器传输到用C、C++、Java或其他语言编写的服务器? 最佳答案 这是可能的。WebRTC使用开放标准通过网络传输内容。您可以在以下RFC中找到所有详细信息:http://tools.ietf.org/wg/rtcweb/如果您想编写自己的native应用程序来接收(甚至发送)WebRTC媒体,您可以从此处获取WebRTCnative代码:http://www.webrtc.org/w

c++ - Eigen 矩阵是否支持 vector 索引?

例如,如果我有一个4x4矩阵。有没有办法创建另一个矩阵(或原始矩阵的View,甚至更好),它只是原始矩阵的第1行和第3行。我只看到如何提取一行或一个block,但没有看到我上面提到的内容。这是我的代码:#include#includeusingnamespaceEigen;intmain(){Matrix4fm=Matrix4f::Random();std::cout一个潜在的解决方案是用一个1和0的矩阵预乘我的矩阵,z=([[0.,1.,0.,0.],[0.,0.,0.,1.]])z*m会给我我想要的,但有没有更好的解决方案。编辑:我想做的事情的可能应用:假设我有矩阵A(mxn)和B

c++ - 如何从 Clang 中的 CallExpr 获取函数指针的参数?

我正在尝试分析其中包含函数调用的C源代码。我能够使用下面的源代码分析正常的函数调用以毫无问题地获取它们的参数,其中ce是一个CallExpr对象:1.if(ce!=NULL){2.QualTypeq=ce->getType();3.constType*t=q.getTypePtrOrNull();4.5.if(t!=NULL){6.llvm::errs()isFunctionPointerType()isPointerType()getCalleeDecl();13.while(D->getPreviousDecl()!=NULL)14.D=D->getPreviousDecl();1

c++ - 释放存储在 std::queue 中的堆指针

考虑这段代码:classFoo;std:queueq;//allocateandaddobjectstothequeuefor(inti=0;i通过单步执行,我可以看到Foo析构函数在每个对象被删除时被调用,所以我希望进程内存使用量会随着每次删除发生而下降-但事实并非如此。在我的应用程序中,队列用于生产者/消费者线程,内存使用量一直在增长。我发现恢复内存的唯一方法是在我从队列中弹出所有项目时将队列交换为空队列:q.swap(std::queue());如果我使用vector而不是队列,删除存储的对象会立即降低进程内存使用量。任何人都可以解释为什么队列不是那样的吗?编辑以从评论中澄清:我

c++ - 如何在 rstudio 上为使用子目录内 src 文件夹中的 C/C++ 文件的包构建和加载共享库?

我有一个正在处理的R包,它包含在src文件夹下用C和C++编写的代码。目前,该包在Rstudio上编译和工作,因为它遵循默认目录结构。随着项目的构建,我希望能够在src下的子文件夹中组织我的代码。按照“编写R扩展”-在子目录下编译的指示,我创建了一个名为“test”(/src/test)的文件夹,其中现在包含我的所有文件(*.c、*.cpp、*.h)和像这样修改我的Makevars-SOURCES_C=$(wildcardtest/*.c)SOURCES_CPP=$(wildcardtest/*.cpp)PKG_CPPFLAGS=-I${R_HOME}/include-I.PKG_LI

c++ - 使用 GCC 洗牌巨大位 vector 的最有效方法是什么

我有两个非常大的位vector(每个大约1GB),我想打乱它们按照以下方式:第一个位vector:a[0],a[1],a[n]第二位vector:b[0],b[1],b[n]结果应该是这样的:c[0]=a[0]c[1]=b[0]c[2]=a[1]c[3]=b[1]在C++中使用新英特尔处理器的vector运算最有效的方法是什么?我想使用GCC来做到这一点。 最佳答案 你可以尝试滚动你自己的循环--intch1,ch2;while((ch1=fgetc(fp1))!=EOF&&(ch2=fgetc(fp2))!=EOF){inti,d